#ifndef __IIC_SOFT_H
#define __IIC_SOFT_H

#include "n32l40x.h"


typedef struct 
{
	GPIO_Module* IIC_SDA_GPIO;
	GPIO_Module* IIC_SCL_GPIO;
	uint16_t IIC_SDA_PIN; 
	uint16_t IIC_SCL_PIN; 

}s_iic_bus_t;/*IIC总线控制器*/
/*******************************************************************************
* Function Name  : delay_us
* Description    : 延时us
* Input          : count 延时nus
*                  None
* Return         : None
*******************************************************************************/
void delay_us(uint32_t count);

/*******************************************************************************
* Function Name  : delay_ms
* Description    : 延时ms
* Input          : count 延时nms
*                  None
* Return         : None
*******************************************************************************/
void delay_ms(uint32_t count);

/*******************************************************************************
* Function Name  : IICStart
* Description    : 开始信号
* Input          : bus 对应IIC总线控制器
*                  None
* Return         : None
*******************************************************************************/
void IICStart(s_iic_bus_t *bus);

/*******************************************************************************
* Function Name  : IICStop
* Description    : 停止信号
* Input          :  bus 对应IIC总线控制器
*                  None
* Return         : None
*******************************************************************************/
void IICStop(s_iic_bus_t *bus);

/*******************************************************************************
* Function Name  : IICWaitAck
* Description    : 主机等待应答
* Input          :  bus 对应IIC总线控制器
*                  None
* Return         : None
*******************************************************************************/
uint8_t IICWaitAck(s_iic_bus_t *bus);

/*******************************************************************************
* Function Name  : IICSendAck
* Description    : 主机发送应答
* Input          :  bus 对应IIC总线控制器
*                  None
* Return         : None
*******************************************************************************/
void IICSendAck(s_iic_bus_t *bus);

/*******************************************************************************
* Function Name  : IICSendNotAck
* Description    : 主机发送非应答
* Input          :  bus 对应IIC总线控制器
*                  None
* Return         : None
*******************************************************************************/
void IICSendNotAck(s_iic_bus_t *bus);

/*******************************************************************************
* Function Name  : IICSendByte
* Description    : 发送一个字节
* Input          :  bus 对应IIC总线控制器
*                  None
* Return         : None
*******************************************************************************/
void IICSendByte(s_iic_bus_t *bus, uint8_t cSendByte);

/*******************************************************************************
* Function Name  : IICReceiveByte
* Description    : 接收一个字节
* Input          :  bus 对应IIC总线控制器
*                  None
* Return         : None
*******************************************************************************/
uint8_t IICReceiveByte(s_iic_bus_t *bus, uint8_t ack);

/*******************************************************************************
* Function Name  : IICInit
* Description    : IIC总线初始化
* Input          :  bus 对应IIC总线控制器
*                  None
* Return         : None
*******************************************************************************/
void IICInit(s_iic_bus_t *bus);

#endif

